//封装ajax
function ajax2(o1){
    //创建一个默认参数
    var def={
        url:'',//请求地址
        type:'get',//请求方式
        async:true,//是否异步
        data:'',//请求参数
        success:function(){}, //请求成功的回调函数
        error:function(){} //请求失败的回调函数
    }

    //使用传入的参数，替换默认参数
    //遍历o1对象中的键值对
    for(var key in o1){
        def[key]=o1[key]
    }

    //判断当前默认参数中的url是否有值
    if(!def.url){
        throw new Error("地址不能为空")
    }

    //创建ajax对象
    var xhr=new XMLHttpRequest()
    //判断是否有参数
    if(def.data){
        //判断请求方式
        if(def.type.toUpperCase()=="GET"){
            //配置请求信息
            xhr.open(def.type,def.url+'?'+def.data,def.async)
            //发送请求
            xhr.send()
        }else{
            //配置请求信息
            xhr.open(def.type,def.url,def.async)
            //设置请求头
            xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
            //发送请求
            xhr.send(def.data)
        }
    }else{
        //配置请求信息
        xhr.open(def.type,def.url,def.async)
        //发送请求
        xhr.send()
    }

    //监听ajax状态
    xhr.onreadystatechange=function(){
        //判断ajax状态是否结束
        if(xhr.readyState==4){
            //判断http请求是否成功
            if(xhr.status==200){
                //把解析完毕的响应结果做为实参
                def.success(xhr.responseText)
            }else{
                //调用失败的回调函数
                def.error(xhr.status)
            }
        }
    }
}

function PromiseAjax(o1){
    //创建一个promise对象
    return new Promise((resolve,reject)=>{
        //创建一个默认参数
        var def={
            url:'',//请求地址
            type:'get',//请求方式
            async:true,//是否异步
            data:'',//请求参数
            success:function(){}, //请求成功的回调函数
            error:function(){} //请求失败的回调函数
        }

        //使用传入的参数，替换默认参数
        //遍历o1对象中的键值对
        for(var key in o1){
            def[key]=o1[key]
        }

        //判断当前默认参数中的url是否有值
        if(!def.url){
            throw new Error("地址不能为空")
        }

        //创建ajax对象
        var xhr=new XMLHttpRequest()
        //判断是否有参数
        if(def.data){
            //判断请求方式
            if(def.type.toUpperCase()=="GET"){
                //配置请求信息
                xhr.open(def.type,def.url+'?'+def.data,def.async)
                //发送请求
                xhr.send()
            }else{
                //配置请求信息
                xhr.open(def.type,def.url,def.async)
                //设置请求头
                xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
                //发送请求
                xhr.send(def.data)
            }
        }else{
            //配置请求信息
            xhr.open(def.type,def.url,def.async)
            //发送请求
            xhr.send()
        }

        //监听ajax状态
        xhr.onreadystatechange=function(){
            //判断ajax状态是否结束
            if(xhr.readyState==4){
                //判断http请求是否成功
                if(xhr.status==200){
                    //把解析完毕的响应结果做为实参
                    resolve(xhr.responseText)
                }else{
                    //调用失败的回调函数
                    reject(xhr.status)
                }
            }
        }
    })
}